package com.lvt.design.pattern.action.observer.p2pdemo.refactor;

import com.lvt.design.pattern.action.observer.p2pdemo.PromotionService;
import com.lvt.design.pattern.action.observer.p2pdemo.UserService;

import java.util.ArrayList;
import java.util.List;

/**
 * desc：假设我们在开发一个 P2P 投资理财系统，
 * 用户注册成功之后，我们会给用户发放投资体验金。
 *
 * @author LT
 * @date 2022/12/4
 */
public class UserController {
    private UserService userService;
    private List<RegObserver> regObservers = new ArrayList<>();

    // 一次性设置好，之后也不可能动态的修改
    public void setRegObservers(List observers) {
        regObservers.addAll(observers);
    }


    public Long register(String telephone, String password) {
        // 省略参数校验等代码
        long userId = userService.register(telephone, password);

        for (RegObserver regObserver : regObservers) {
            regObserver.handleRegSuccess(userId);
        }
        return userId;
    }
}
